<?php
/**
* @version		1.0 : select.php marum56
* @package		Joomla
*/

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die( 'Restricted access' );


/**
 * HTML View class for the Select component
 *
 * @static
 * @package	Joomla
 * @subpackage	Select
 * @since 1.0
 */
class msMysql
{
	 /** 
	 * Metoda zwraca jeden rekord z dowolnej tabeli. 
	 *
	 * @param 	string 	$selektorTabeli		Zwracane pola wymienione po poleceniu SELECT np. 'gid, name, pesel' lub '*' wtedy są wracane wszystkie pola tabeli
	 * @param 	string 	$nameTable		Nazwa tabeli
	 * @param 	string 	$keyTable		Pole tabeli, po którym szukamy  		
	 * @param 	string  $key 			Klucz, po którym szukamy
	 * @param 	string  $keyMaxRegisterDate 	Klucz, po którym szukamy najmłodszego rekordu
	 * @param 	boolean $maxRegisterDate 	Wstawia do zapytanie przeszukiwanie po najmłodszym rekordzie 
	 * @param 	boolean $setDel			Wstawia do zapytania przeszukiwanie po rekordach "wirtualnie" usuniętych
	 * @return 	array 	Tablica asocjacyjną zwróconego rekordu
	 */
	function getloadAssoc($selektorTabeli, $nameTable, $poleTabli, $key, $keyMaxRegisterDate='gid', $setMaxRegisterDate=true, $setDel=true)
	{       
		$db =& JFactory::getDBO();
		
		// Pobiera najmlodszy rekord dla danej grupy rekordów
		$query = 'SELECT '.$selektorTabeli
		. ' FROM '.$nameTable.' AS a '
		. ' WHERE '.$poleTabli.' = '.$db->Quote( $key );
		
		if ( $setMaxRegisterDate ) { 
			$query .= ' AND a.registerDate = (SELECT max(registerDate) 
		                                          FROM '.$nameTable.' 
		                                          WHERE '.$keyMaxRegisterDate.' = a.'.$keyMaxRegisterDate.')';
		}
		$query .= $setDel ? ' AND del=0' : '';

		$db->setQuery($query) ;
		return $db->loadAssoc( );
	}

	 /** 
	 * Metoda zwraca listę rekordów z dowolnej tabeli. 
	 *
	 * @param 	string 	$selektorTabeli		Zwracane pola wymienione po poleceniu SELECT np. 'gid, name, pesel' lub '*' wtedy są wracane wszystkie pola tabeli
	 * @param 	string 	$nameTable		Nazwa tabeli
	 * @param 	string 	$keyTable		Pole tabeli, po którym szukamy  		
	 * @param 	string  $key 			Klucz, po którym szukamy
	 * @param 	string  $keyMaxRegisterDate 	Klucz, po którym szukamy najmłodszego rekordu
	 * @param 	boolean $maxRegisterDate 	Wstawia do zapytanie przeszukiwanie po najmłodszym rekordzie 
	 * @param 	boolean $setDel			Wstawia do zapytania przeszukiwanie po rekordach "wirtualnie" usuniętych
	 * @return 	array 	Tablica asocjacyjna listy rekordów
	 */
	function getloadAssocList($selektorTabeli, $nameTable, $poleTabli, $key, $keyMaxRegisterDate='gid', $setMaxRegisterDate=true, $setDel=true)
	{       
		$db =& JFactory::getDBO();
		
		// Pobiera najmlodszy rekord dla danej grupy rekordów
		$query = 'SELECT '.$selektorTabeli
		. ' FROM '.$nameTable.' AS a '
		. ' WHERE '.$poleTabli.' = '.$db->Quote( $key );
		
		if ( $setMaxRegisterDate ) { 
			$query .= ' AND a.registerDate = (SELECT max(registerDate) 
		                                          FROM '.$nameTable.' 
		                                          WHERE '.$keyMaxRegisterDate.' = a.'.$keyMaxRegisterDate.')';
		}
		$query .= $setDel ? ' AND del=0' : '';

		$db->setQuery($query) ;
		return $db->loadAssocList( );
	}
	
	
	 /** 
	 * Metoda zwraca PIERWSZE POLE !!! rekordu z dowolnej tabeli. 
	 *
	 * @access 	public
	 * @param 	string 	$selektorTabeli		Zwracane pole wymienione po poleceniu SELECT
	 * @param 	string 	$nameTable		Nazwa tabeli
	 * @param 	string 	$keyTable		Pole tabeli, po którym szukamy  		
	 * @param 	string  $key 			Klucz, po którym szukamy
	 * @param 	string  $keyMaxRegisterDate 	Klucz, po którym szukamy najmłodszego rekordu
	 * @param 	boolean $maxRegisterDate 	Wstawia do zapytanie przeszukiwanie po najmłodszym rekordzie 
	 * @param 	boolean $setDel			Wstawia do zapytania przeszukiwanie po rekordach "wirtualnie" usuniętych
	 * @return 	string 	Pierwsze pole pierwszego wiersza 
	 */
	function getloadResult($selektorTabeli, $nameTable, $poleTabli, $key, $keyMaxRegisterDate='gid', $setMaxRegisterDate=true, $setDel=true)
	{       
		$db =& JFactory::getDBO();
		
		// Pobiera najmlodszy rekord dla danej grupy rekordów
		$query = 'SELECT '.$selektorTabeli
		. ' FROM '.$nameTable.' AS a '
		. ' WHERE '.$poleTabli.' = '.$db->Quote( $key );
		
		if ( $setMaxRegisterDate ) { 
			$query .= ' AND a.registerDate = (SELECT max(registerDate) 
		                                          FROM '.$nameTable.' 
		                                          WHERE '.$keyMaxRegisterDate.' = a.'.$keyMaxRegisterDate.')';
		}
		$query .= $setDel ? ' AND del=0' : '';

		$db->setQuery($query) ;
		return $db->loadResult( );
	}

	 /** 
	 * Metoda zwraca liste rekordów z dowolnej tabeli. 
	 *
	 * @param 	string 	$selektorTabeli		Zwracane pola wymienione po poleceniu SELECT np. 'gid, name, pesel' lub '*' wtedy są wracane wszystkie pola tabeli
	 * @param 	string 	$nameTable		Nazwa tabeli
	 * @param 	string 	$keyTable		Pole tabeli, po którym szukamy  		
	 * @param 	string  $key 			Klucz, po którym szukamy
	 * @param 	string  $keyMaxRegisterDate 	Klucz, po którym szukamy najmłodszego rekordu
	 * @param 	boolean $maxRegisterDate 	Wstawia do zapytanie przeszukiwanie po najmłodszym rekordzie 
	 * @param 	boolean $setDel			Wstawia do zapytania przeszukiwanie po rekordach "wirtualnie" usuniętych
	 * @return 	array 	Tablica obiektów, gdzie jeden rekord odpowiada jednemu obiektowi
	 *                      np. odczyt pola tabeli "jakiesPoleTabeli" z wiersza nr 3 tabeli wygląda tak: 
	 *								$tablicaObiektów = msMysql::getloadObjectList(...);
	 *								$odczytanePole = $tablicaObiektów[2]->jakiesPoleTabeli; 
	 */
	function getloadObjectList($selektorTabeli, $nameTable, $poleTabli, $key, $keyMaxRegisterDate='gid', $setMaxRegisterDate=true, $setDel=true)
	{       
		$db =& JFactory::getDBO();
		
		// Pobiera najmlodszy rekord dla danej grupy rekordów
		$query = 'SELECT '.$selektorTabeli
		. ' FROM '.$nameTable.' AS a '
		. ' WHERE '.$poleTabli.' = '.$db->Quote( $key );
		
		if ( $setMaxRegisterDate ) { 
			$query .= ' AND a.registerDate = (SELECT max(registerDate) 
		                                          FROM '.$nameTable.' 
		                                          WHERE '.$keyMaxRegisterDate.' = a.'.$keyMaxRegisterDate.')';
		}
		$query .= $setDel ? ' AND del=0' : '';

		$db->setQuery($query) ;
		return $db->loadObjectList( );
	}
	
	
}
